@@ -214,6 +214,7 @@ urlpatterns += [ |
||
| 214 | 214 |
urlpatterns += [ |
| 215 | 215 |
url(r'^clerk/submit$', oauth_views.clerk_submit_api, name='clerk_submit_api'), # 店员信息提交 |
| 216 | 216 |
url(r'^clerk/sale/submit$', sale_views.clerk_sale_submit_api, name='clerk_sale_submit'), # 店员销售信息提交 |
| 217 |
+ url(r'^clerk/integral/list$', sale_views.clerk_integral_list_api, name='clerk_integral_list_api'), # 店员销售积分列表 |
|
| 217 | 218 |
] |
| 218 | 219 |
|
| 219 | 220 |
urlpatterns += [ |
@@ -0,0 +1,25 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.11 on 2018-04-02 11:04 |
|
| 3 |
+from __future__ import unicode_literals |
|
| 4 |
+ |
|
| 5 |
+from django.db import migrations, models |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class Migration(migrations.Migration): |
|
| 9 |
+ |
|
| 10 |
+ dependencies = [ |
|
| 11 |
+ ('integral', '0002_auto_20180308_1440'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AddField( |
|
| 16 |
+ model_name='saleclerkintegralincomeexpensesinfo', |
|
| 17 |
+ name='model_id', |
|
| 18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u578b\u53f7\u552f\u4e00\u6807\u8bc6', max_length=32, null=True, verbose_name='model_id'), |
|
| 19 |
+ ), |
|
| 20 |
+ migrations.AddField( |
|
| 21 |
+ model_name='saleclerkintegralincomeexpensesinfo', |
|
| 22 |
+ name='model_name', |
|
| 23 |
+ field=models.CharField(blank=True, help_text='\u578b\u53f7\u540d\u79f0', max_length=255, null=True, verbose_name='model_name'), |
|
| 24 |
+ ), |
|
| 25 |
+ ] |
@@ -21,6 +21,9 @@ class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin): |
||
| 21 | 21 |
|
| 22 | 22 |
type = models.IntegerField(_(u'type'), choices=TYPE, default=INCOME, help_text=u'收支类别', db_index=True) |
| 23 | 23 |
|
| 24 |
+ model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True) |
|
| 25 |
+ model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称') |
|
| 26 |
+ |
|
| 24 | 27 |
code = models.CharField(_(u'code'), max_length=32, blank=True, null=True, help_text=u'机身码', db_index=True) |
| 25 | 28 |
|
| 26 | 29 |
consumer_name = models.CharField(_(u'consumer_name'), max_length=32, blank=True, null=True, help_text=u'消费者姓名') |
@@ -43,6 +46,15 @@ class SaleclerkIntegralIncomeExpensesInfo(BaseModelMixin): |
||
| 43 | 46 |
def __unicode__(self): |
| 44 | 47 |
return unicode(self.pk) |
| 45 | 48 |
|
| 49 |
+ @property |
|
| 50 |
+ def data(self): |
|
| 51 |
+ return {
|
|
| 52 |
+ 'type': self.type, |
|
| 53 |
+ 'integral': self.integral, |
|
| 54 |
+ 'modelName': self.model_name, |
|
| 55 |
+ 'serialNo': self.code, |
|
| 56 |
+ } |
|
| 57 |
+ |
|
| 46 | 58 |
|
| 47 | 59 |
class SaleclerkSubmitLogInfo(BaseModelMixin): |
| 48 | 60 |
franchiser_id = models.CharField(_(u'franchiser_id'), max_length=32, blank=True, null=True, help_text=u'经销商唯一标识', db_index=True) |
@@ -7,6 +7,7 @@ from django.db import transaction |
||
| 7 | 7 |
from django.shortcuts import render |
| 8 | 8 |
from django_logit import logit |
| 9 | 9 |
from django_response import response |
| 10 |
+from paginator import pagination |
|
| 10 | 11 |
|
| 11 | 12 |
from account.models import SaleclerkInfo, UserInfo |
| 12 | 13 |
from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo |
@@ -77,10 +78,12 @@ def clerk_sale_submit_api(request): |
||
| 77 | 78 |
# 店员积分 |
| 78 | 79 |
# TODO: 序列号 vs. 积分 |
| 79 | 80 |
try: |
| 80 |
- integral = ModelInfo.objects.get(ModelID=ModelID).integral |
|
| 81 |
+ model = ModelInfo.objects.get(ModelID=ModelID) |
|
| 81 | 82 |
except ModelInfo.DoesNotExist: |
| 82 | 83 |
return response(ProductModelStatusCode.MODEL_NOT_FOUND) |
| 83 | 84 |
|
| 85 |
+ integral = model.integral |
|
| 86 |
+ |
|
| 84 | 87 |
clerk.integral += integral |
| 85 | 88 |
clerk.total_integral += integral |
| 86 | 89 |
clerk.save() |
@@ -90,6 +93,8 @@ def clerk_sale_submit_api(request): |
||
| 90 | 93 |
franchiser_id=clerk.franchiser_id, |
| 91 | 94 |
clerk_id=clerk.clerk_id, |
| 92 | 95 |
type=SaleclerkIntegralIncomeExpensesInfo.INCOME, |
| 96 |
+ model_id=model.model_id, |
|
| 97 |
+ model_name=model.model_name, |
|
| 93 | 98 |
code=serialNo, |
| 94 | 99 |
consumer_name=consumer_name, |
| 95 | 100 |
consumer_phone=consumer_phone, |
@@ -107,6 +112,31 @@ def clerk_sale_submit_api(request): |
||
| 107 | 112 |
|
| 108 | 113 |
|
| 109 | 114 |
@logit |
| 115 |
+def clerk_integral_list_api(request): |
|
| 116 |
+ user_id = request.POST.get('user_id', '')
|
|
| 117 |
+ page = int(request.POST.get('page', 1))
|
|
| 118 |
+ num = int(request.POST.get('num', settings.GROUP_NUM_PER_PAGE))
|
|
| 119 |
+ |
|
| 120 |
+ try: |
|
| 121 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
| 122 |
+ except UserInfo.DoesNotExist: |
|
| 123 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 124 |
+ |
|
| 125 |
+ try: |
|
| 126 |
+ clerk = SaleclerkInfo.objects.get(unionid=user.unionid, status=True) |
|
| 127 |
+ except SaleclerkInfo.DoesNotExist: |
|
| 128 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 129 |
+ |
|
| 130 |
+ integrals = SaleclerkIntegralIncomeExpensesInfo.objects.filter(clerk_id=clerk.clerk_id).order_by('-pk')
|
|
| 131 |
+ integrals, left = pagination(integrals, page, num) |
|
| 132 |
+ integrals = [integral.data for integral in integrals] |
|
| 133 |
+ |
|
| 134 |
+ return response(200, data={
|
|
| 135 |
+ 'integrals': integrals, |
|
| 136 |
+ }) |
|
| 137 |
+ |
|
| 138 |
+ |
|
| 139 |
+@logit |
|
| 110 | 140 |
@transaction.atomic |
| 111 | 141 |
def clerk_sale_submit_api_bak(request): |
| 112 | 142 |
""" 店员信息提交 """ |